<?php

class KalenderController extends Zend_Controller_Action
{

    public function init()
    {
        /* Initialize action controller here */
    }

    public function indexAction()
    {
        // action body
    }

    public function bearbeitenAction()
    {
    	//adminprüfung anfang
    	$pareNamespace = new Zend_Session_Namespace('PaRe');
    	$mapperParkplatz = new Application_Model_ParkplatzMapper();//gibt array von einem model zurück
    	
    	if ($pareNamespace->status != 'Admin'){
    		return $this->_redirect('/kalender/index');
    	}
    	//adminprüfung ende
    	
    	$request = $this->getRequest();
   	    
    	$parkplatznr = $request->parkplatznr;
    	$form = new Application_Form_KalenderBearbeitenForm();
    	if (!isset($parkplatznr)){
    		$meldungKalenderdatum = 'Die Parkplatznr wurde nicht angegeben!';
    		
    	}else if ($mapperParkplatz->parkplatzExists($parkplatznr) == true){
	    	
	    	//anfang wenn gültige parkplatznr	    	
	    	$eintrag = $mapperParkplatz->fetchParkplatz($parkplatznr);
	    	$parkplatzmodel = $eintrag[0];
	    	
	    	$kalendername = $parkplatzmodel->getKalenderName();
	    	$parkbereich = $parkplatzmodel->getStandort();
	    	
	    	$kalenderTBL = new Application_Model_KalenderMapper();
			$kalenderTBL->setTableName($kalendername);
			$kalenderTBL->setMaxanzahl($parkplatzmodel->getAnzahl());//hier nicht nötig
			$minmaxdatum = $kalenderTBL->getMinMax();
			
			$meldungKalenderdatum = "Der Kalender für den Parkbereich: " .$parkbereich;
						
				if ($minmaxdatum != null){
					$meldungKalenderdatum .= "</p><p> geht vom "
					.date("d.m.Y",strtotime($minmaxdatum['min'])).
					" bis einschließlich " .date("d.m.Y",strtotime($minmaxdatum['max'])). " ."; 
					
				}else{
					$meldungKalenderdatum .= "</p><p>enthält keine Tage!";
				}
			
	    	if ($this->getRequest()->isPost()) { 
				if ($form->isValid($request->getPost())) {
					$auswahl = $form->getValue('auswahl');
					
					if ($auswahl == 'add'){
						$kalenderTBL->hinzufuegen($form->getValue('datumvon'),$form->getValue('datumbis'));
					}
					
					if ($auswahl == 'delete'){
						$kalenderTBL->entfernen($form->getValue('datumvon'),$form->getValue('datumbis'));
					}
					
					return $this->_redirect('/kalender/bearbeiten?parkplatznr=' . $parkplatznr);
	        		
				}
	    	}
	    	//ende wenn gültige parkplatznr
    	}else{//wenn ungültige parkplatznr	
    		$meldungKalenderdatum = "Parkplatznummer ungültig.";
    	}
		$this->view->meldungKalenderdatum = $meldungKalenderdatum;		
    	
    	
    	$this->view->form = $form;
    }

    public function anlegenAction()
    {
        // einen neuen (leeren) Kalender erstellen
        // der Name wird per Browserzeile übergeben
        
    	//adminprüfung anfang
    	$pareNamespace = new Zend_Session_Namespace('PaRe');
    	$hinweise = array();
    	
    	if ($pareNamespace->status != 'Admin'){
    		return $this->_redirect('/kalender/index');
    	}
    	//adminprüfung ende
    	    	
    	$request = $this->getRequest();
    	$kalendername = $request->kalendername;
    	if (isset($kalendername)){
        	$kalenderTBL = new Application_Model_KalenderMapper();
        	$kalenderTBL->erstelleKalender($kalendername);
        	$hinweise[] = "Der Kalender " .$kalendername. " wurde erstellt.";
        	$hinweise[] = "Dieser ist aber noch leer.";
        	$hinweise[] = "Es muss noch ein Zeitraum hinzugefügt werden.";
        	$hinweise[] = "Gehen sie zur Übersicht und klicken sie auf Kalender bearbeiten.";
    	}else{
    		$hinweise[] = "Es muss ein gültiger Kalendername angeben werden.";
    	}
    	
    	$this->view->hinweise = $hinweise;
    	
    }

    
    //noch gefährlich, da man so alle möglichen tabellen löschen kann
    //eher was zum Testen
    public function entfernenAction()
    {
     
        //adminprüfung anfang
    	$pareNamespace = new Zend_Session_Namespace('PaRe');
    	$parkplatzMapper = new Application_Model_ParkplatzMapper();
    	
    	if ($pareNamespace->status != 'Admin'){
    		return $this->_redirect('/kalender/index');
    	}
    	//adminprüfung ende
    	$meldung = "Es muss ein gültiger Kalendername angeben werden.";
    	
    	$request = $this->getRequest();
    	
    	//hier überprüfen, ob es den kalendername gibt.
    	$kalendername = $request->kalendername;
    	if (isset($kalendername)){
        	if ($parkplatzMapper->kalenderNameExists($kalendername) == true){
    			$kalenderTBL = new Application_Model_KalenderMapper();
        		$kalenderTBL->entferneKalender($kalendername);
        		$meldung = "Der Kalender " .$kalendername. " wurde entfernt.";
        	}
    	}
    	
    	$this->view->meldung = $meldung;
    	
    }
}